package com.eonmind.ai.core.draw.platform.mdJounery.model;

import lombok.Data;
import lombok.ToString;

import java.util.List;

/**
 * MJ任务查询响应类
 */
@Data
public class MdTaskQueryResponse {
    /**
     * 任务的id，任务查询接口传入的id
     */
    Long taskId;

    /**
     * 任务类型, 值: IMAGINE, UPSCALE, VARIATION, ZOOM, PAN, DESCRIBE, BLEND, SHORTEN
     */
    private String action;

    /**
     * 可执行按钮，再操作的可选按钮
     */
    private List<Button> buttons;

    /**
     * 动作标识
     */
    private String customId;

    /**
     * 图标
     */
    private String emoji;

    /**
     * 文本
     */
    private String label;

    /**
     * 样式: 2（Primary）、3（Green）
     */
    private Integer style;

    /**
     * 类型，系统内部使用
     */
    private Integer type;

    /**
     * 任务描述
     */
    private String description;

    /**
     * 失败原因
     */
    private String failReason;

    /**
     * 结束时间
     */
    private Long finishTime;

    /**
     * ID
     */
    private String id;

    /**
     * 图片url
     */
    private String imageUrl;

    /**
     * 任务进度
     */
    private String progress;

    /**
     * 提示词
     */
    private String prompt;

    /**
     * 提示词-英文
     */
    private String promptEn;

//    /**
//     * 扩展字段
//     */
//    private Properties properties;

    /**
     * 开始执行时间
     */
    private Long startTime;

    /**
     * 自定义参数
     */
    private String state;

    /**
     * 任务状态, 可用值: NOT_START, SUBMITTED, MODAL, IN_PROGRESS, FAILURE, SUCCESS, WAIT_SUBMIT
     */
    private String status;

    /**
     * 提交时间
     */
    private Long submitTime;


    /**
     * 按钮类，表示可执行的操作按钮
     */
    @Data
    @ToString
    public static class Button {
        /**
         * 按钮id
         */
        private String customId;
        /**
         * 按钮图标
         */
        private String emoji;
        /**
         * 按钮文本
         */
        private String label;

        /**
         * 样式: 2（Primary）、3（Green）
         */
        private Integer style;

        /**
         * 类型，系统内部使用
         */
        private Integer type;
    }

    /**
     * 扩展属性类，用于存储任务的额外信息
     */
    @Data
    @ToString
    public static class Properties {
        // Add properties fields as needed
    }
}